//-------------------------------------------------------------------
//	Copyright (c) 2013-2014  Zhirnov Andrey
//	This file is part of the "UX OpwnGL Framework" project.
//	See copyright notice in "UX_GL_Framework.h".
//-------------------------------------------------------------------

#pragma once


// Init //
#define UX_LIBARCHIVE_DISABLE
#define UX_ZLIB_DISABLE
#define _UXS_STD_CONSOLE_DISABLED

// Disable AL, CL, GL, DX //
//#define _DEFCFG_UXS_USE_OPENGL_DISABLED
//#define _DEFCFG_UXS_USE_OPENAL_DISABLED
//#define _DEFCFG_UXS_USE_OPENCL_DISABLED
#define _DEFCFG_UXS_USE_DIRECTX11_DISABLED


#define UX_CL_USE_DEFAULT_FUNC
#define UX_GL_USE_DEFAULT_FUNC


#define LOG_EXT( _text, _level, _file, _line )	__log_write( _text, (int)_level, _file, _line )


#define	UX_STL	Framework


#define UX_GL_BASEOBJECT_OVERRIDE \
	class UX_EXPORT GLBaseObject : protected CReferenced \
	{ \
	private: \
		GLBaseObject(const GLBaseObject &) {} \
		void operator = (const GLBaseObject &) {} \
		\
	public: \
		GLBaseObject() {} \
		virtual ~GLBaseObject() {} \
	};
	
#define UX_CL_BASEOBJECT_OVERRIDE \
	class UX_EXPORT CLBaseObject : protected CReferenced \
	{ \
	private: \
		CLBaseObject(const CLBaseObject &) {} \
		void operator = (const CLBaseObject &) {} \
		\
	public: \
		CLBaseObject() {} \
		virtual ~CLBaseObject() {} \
	};


void __log_write (const char *msg, int level, const char *file, int line);

#include <logger/ux_logger.h>
#include <stl_core/ux_stl_core.h>
#include <stl_ext/ux_stl_ext.h>


namespace Framework
{
	using namespace UXTypes;
	using namespace UXTypesExt;

	using namespace UXMath;
	using namespace UXMathExt;

	using namespace UXLogger;

	using namespace GLShell;
	using namespace CLShell;


	SHARED_POINTER( GLBuffer );
	SHARED_POINTER( GLMesh );

	SHARED_POINTER( GLFrameBuffer );

	SHARED_POINTER( GLTexture );
	SHARED_POINTER( GLTexture2D );
	SHARED_POINTER( GLTextureCube );
	SHARED_POINTER( GLTexture2DArray );
	SHARED_POINTER( GLTexture3D );
	SHARED_POINTER( GLTextureBuffer );

	SHARED_POINTER( GLShader );
	SHARED_POINTER( GLProgram );
	SHARED_POINTER( GLProgramPipeline );
	
	SHARED_POINTER( CLQueue );
	SHARED_POINTER( CLKernel );
	SHARED_POINTER( CLProgram );
	SHARED_POINTER( CLMemory );
	SHARED_POINTER( CLBuffer );
	SHARED_POINTER( CLImage );
	SHARED_POINTER( CLSampler );
	SHARED_POINTER( CLMemObjArray );
}
